package com.qianjiangcloud.store.ui.pulltorefresh.lib;


import android.content.Context;
import android.util.AttributeSet;
import android.view.ContextMenu;
import android.view.View;

import com.qianjiangcloud.store.ui.pulltorefresh.lib.internal.EmptyViewMethodAccessor;

/**
 * Created by Jelly on 2016/7/21.
 */
public class PullToRefreshHeadGridView extends PullToRefreshAdapterViewBase<HeaderGridView>{


    private class InternalListView extends HeaderGridView implements EmptyViewMethodAccessor {

        public InternalListView(Context context, AttributeSet attrs) {
            super(context, attrs);
        }

        @Override
        public void setEmptyView(View emptyView) {
            PullToRefreshHeadGridView.this.setEmptyView(emptyView);
        }

        @Override
        public void setEmptyViewInternal(View emptyView) {
            super.setEmptyView(emptyView);
        }

        public ContextMenu.ContextMenuInfo getContextMenuInfo() {
            return super.getContextMenuInfo();
        }
    }

    public PullToRefreshHeadGridView(Context context) {
        super(context);
        this.setDisableScrollingWhileRefreshing(false);
    }

    public PullToRefreshHeadGridView(Context context, int mode) {
        super(context, mode);
        this.setDisableScrollingWhileRefreshing(false);
    }

    public PullToRefreshHeadGridView(Context context, AttributeSet attrs) {
        super(context, attrs);
        this.setDisableScrollingWhileRefreshing(false);
    }

    @Override
    public ContextMenu.ContextMenuInfo getContextMenuInfo() {
        return ((InternalListView) getRefreshableView()).getContextMenuInfo();
    }



    // public void setReleaseLabel(String releaseLabel) {
    // super.setReleaseLabel(releaseLabel);
    // if (null != headerLoadingView) {
    // headerLoadingView.setReleaseLabel(releaseLabel);
    // }
    // if (null != footerLoadingView) {
    // footerLoadingView.setReleaseLabel(releaseLabel);
    // }
    // }
    //
    // public void setPullLabel(String pullLabel) {
    // super.setPullLabel(pullLabel);
    //
    // if (null != headerLoadingView) {
    // headerLoadingView.setPullLabel(pullLabel);
    // }
    // if (null != footerLoadingView) {
    // footerLoadingView.setPullLabel(pullLabel);
    // }
    // }
    //
    // public void setRefreshingLabel(String refreshingLabel) {
    // super.setRefreshingLabel(refreshingLabel);
    //
    // if (null != headerLoadingView) {
    // headerLoadingView.setRefreshingLabel(refreshingLabel);
    // }
    // if (null != footerLoadingView) {
    // footerLoadingView.setRefreshingLabel(refreshingLabel);
    // }
    // }

    @Override
    protected final HeaderGridView createRefreshableView(Context context, AttributeSet attrs) {
        HeaderGridView lv = new InternalListView(context, attrs);

        // final int mode = this.getMode();
        //
        // // Loading View Strings
        // String pullLabel =
        // context.getString(R.string.pull_to_refresh_pull_label);
        // String refreshingLabel =
        // context.getString(R.string.pull_to_refresh_refreshing_label);
        // String releaseLabel =
        // context.getString(R.string.pull_to_refresh_release_label);

        // Add Loading Views
        // if (mode == MODE_PULL_DOWN_TO_REFRESH || mode == MODE_BOTH) {
        // FrameLayout frame = new FrameLayout(context);
        // headerLoadingView = new LoadingLayout(context,
        // MODE_PULL_DOWN_TO_REFRESH, releaseLabel, pullLabel,
        // refreshingLabel);
        // frame.addView(headerLoadingView,
        // FrameLayout.LayoutParams.FILL_PARENT,
        // FrameLayout.LayoutParams.WRAP_CONTENT);
        // headerLoadingView.setVisibility(View.GONE);
        // lv.addHeaderView(frame);
        // }
        // if (mode == MODE_PULL_UP_TO_REFRESH || mode == MODE_BOTH) {
        // FrameLayout frame = new FrameLayout(context);
        // footerLoadingView = new LoadingLayout(context,
        // MODE_PULL_UP_TO_REFRESH, releaseLabel, pullLabel,
        // refreshingLabel);
        // frame.addView(footerLoadingView,
        // FrameLayout.LayoutParams.FILL_PARENT,
        // FrameLayout.LayoutParams.WRAP_CONTENT);
        // footerLoadingView.setVisibility(View.GONE);
        // lv.addFooterView(frame);
        // }

        // Set it to this so it can be used in ListActivity/ListFragment
        lv.setId(android.R.id.list);
        return lv;
    }

    // @Override
    // protected void setRefreshingInternal(boolean doScroll) {
    // super.setRefreshingInternal(false);
    //
    // final LoadingLayout originalLoadingLayout, listViewLoadingLayout;
    // final int selection, scrollToY;
    //
    // switch (getCurrentMode()) {
    // case MODE_PULL_UP_TO_REFRESH:
    // originalLoadingLayout = this.getFooterLayout();
    // listViewLoadingLayout = this.footerLoadingView;
    // selection = refreshableView.getCount() - 1;
    // scrollToY = getScrollY() - getHeaderHeight();
    // break;
    // case MODE_PULL_DOWN_TO_REFRESH:
    // default:
    // originalLoadingLayout = this.getHeaderLayout();
    // listViewLoadingLayout = this.headerLoadingView;
    // selection = 0;
    // scrollToY = getScrollY() + getHeaderHeight();
    // break;
    // }
    //
    // if (doScroll) {
    // // We scroll slightly so that the ListView's header/footer is at the
    // // same Y position as our normal header/footer
    // this.setHeaderScroll(scrollToY);
    // }
    //
    // // Hide our original Loading View
    // originalLoadingLayout.setVisibility(View.INVISIBLE);
    //
    // // Show the ListView Loading View and set it to refresh
    // listViewLoadingLayout.setVisibility(View.VISIBLE);
    // listViewLoadingLayout.refreshing();
    //
    // if (doScroll) {
    // // Make sure the ListView is scrolled to show the loading
    // // header/footer
    // refreshableView.setSelection(selection);
    //
    // // Smooth scroll as normal
    // smoothScrollTo(0);
    // }
    // }

    // @Override
    // protected void resetHeader() {
    //
    // LoadingLayout originalLoadingLayout;
    // LoadingLayout listViewLoadingLayout;
    //
    // int scrollToHeight = getHeaderHeight();
    // final boolean doScroll;
    //
    // switch (getCurrentMode()) {
    // case MODE_PULL_UP_TO_REFRESH:
    // originalLoadingLayout = this.getFooterLayout();
    // listViewLoadingLayout = footerLoadingView;
    // doScroll = this.isReadyForPullUp();
    // break;
    // case MODE_PULL_DOWN_TO_REFRESH:
    // default:
    // originalLoadingLayout = this.getHeaderLayout();
    // listViewLoadingLayout = headerLoadingView;
    // scrollToHeight *= -1;
    // doScroll = this.isReadyForPullDown();
    // break;
    // }
    //
    // // Set our Original View to Visible
    // originalLoadingLayout.setVisibility(View.VISIBLE);
    //
    // // Scroll so our View is at the same Y as the ListView header/footer,
    // // but only scroll if the ListView is at the top/bottom
    // if (doScroll) {
    // this.setHeaderScroll(scrollToHeight);
    // }
    //
    // // Hide the ListView Header/Footer
    // listViewLoadingLayout.setVisibility(View.GONE);
    //
    // super.resetHeader();
    // }
}
